# 异常捕获流程
# 上面的 try...except... 只是最基本的捕获手段，我们先来解读一下这两个关键字：
#
# try: 尝试运行一段代码，如果没有报错那就是最好
# except: 如果try运行的代码报错了，就会触发这个关键字，运行这个关键字对应的代码
# 但 完整 的异常关键字还有其他两个
#
# try: 尝试运行一段代码，如果没有报错那就是最好
# except: 如果try运行的代码报错了，就会触发这个关键字，运行这个关键字对应的代码
# else: 如果try运行没问题，就运行else对应的代码
# finally：不管try是否运行成功，都会触发这个关键字，运行这个关键字对应的代码

def maybeError(valueList):
    oldValueList = []  # 这里可以是从数据库搜索出来的旧值
    try:
        newValueList = [int(newValue) for newValue in valueList]
    except:
        print(f"哎呀报错啦，你这个列表 {valueList} 不太对劲哦")
    else:
        print("嗯，你这个列表很好很完美，我要清空以前的旧数据，并且把你这个新的存进去")
    finally:
        print("不管怎么样数据库连接我肯定是要关闭的")

# print("first execute:")
# maybeError(['1', '2', '3'])
# print("\nsecond execute:")
# maybeError(['1', 'a', '3'])

# 结果
"""
first execute:
嗯，你这个列表很好很完美，我要清空以前的旧数据，并且把你这个新的存进去
不管怎么样数据库连接我肯定是要关闭的

second execute:
哎呀报错啦，你这个列表 ['1', 'a', '3'] 不太对劲哦
不管怎么样数据库连接我肯定是要关闭的
"""

# def executeCase(caseList):
#     resultList = []
#     for case in caseList:
#         result = 0 # 0|1|2|3：未执行|执行|成功|失败
#         try:
#             result = 1
#             int(case)
#         except:
#             result = 3
#             print("本次执行有问题")
#         else:
#             result = 2
#             print("本次执行ok")
#         finally:
#             resultList.append(result)
#     return resultList
#
# print(executeCase(['1', 'a', '3']))